knowing how different access specifiers work in oo language